2026-0114-1057 gdc - Unsynced - The Last of Us Melee System
Slip-box
To be fleeting notes
Fleeting
To be literature notes (Understanding)
L-Origin
https://www.youtube.com/watch?v=Ox2H3kUQByo
这份 GDC 演讲由 Naughty Dog(顽皮狗)的工作室系统设计师 Anthony Neumann 主讲,详细解析了《最后生还者》(The Last of Us)中近身格斗系统(Melee System)的设计与实现。
以下是内容的详细中文整理与总结:
一、 核心目标与团队架构
- 团队规模 (01:58 - 03:00)
顽皮狗一向推行“精兵简政”,整个近战系统仅由约 3.3 个人完成:
- 1 名设计师:负责机械设计与脚本。
- 2 名动画师:Lee Davis(侧重技术动画)和 Ryan McGarry(侧重电影化/表情动画)。
- 1 名程序员(仅占用 1/3 的时间):负责底层控制与内存管理。
2. 核心设计目标 (03:00 - 04:00)
- 支持基调:通过暴力、真实感传达末日下“不惜代价生存”的残酷性。
- 提升角色地位:在弹药稀缺的世界里,近战必须成为战斗的核心支柱,而非补充。


二、 设计:冲击力与真实感的塑造
- 打造“重量感”与“冲击力” (04:55 - 06:55)
Neumann 参考了大量的 MMA(综合格斗) 视频:
- 头部优先表达速度:观察发现,最猛烈的撞击通常表现为头部的剧烈位移,而躯干相对不动。这让角色显得更重、更真实。

-
动作节奏控制:通过“长预备、极短挥拳(2-3 帧)、长收招”来保证动作的可读性和爆发感。
-
impact

-
momentum
-
Momentum(动量)的瞬间消失:当头部撞击墙壁或柜台时,如果产生反弹会显得虚假。设计上让动能完全转化为内部创伤(无反弹),使玩家能隔着屏幕“感觉到疼”。

- 情感与人性化 (07:49 - 08:50)
近战不仅仅是动作,更是情感表达:
- 特写镜头下的面部表情:通过编排让相机在格斗时靠近角色,展示拼命挣扎的表情。Neumann 认为这比血腥程度更能体现战斗的残酷。

- 动作动机 (Motivation) (08:47 - 11:46)
为了隐藏动画切换的突兀感(Pop),必须给角色提供“物理借口”:
-
反面案例:敌人为了被刺杀而主动站直身子(缺乏动机)。

-
正面案例:利用斧头砍入脖子的惯性来带动敌人的体位调整。即使位移很大,玩家也会因为物理上的“因果关系”而忽略这种修正。

-
前后的感知不是很明显,可以很快地拉进一段距离


- camera 默认视角
- systemic melee camera
- 在攻击时会转到中间视角以最好地展现攻击
- 如果最开始的摄像机偏移太多,会将摄像机逐渐过度到中心视角

- animated cameras
- 为了更好地表现电影化场面
- cut cameras
- only for death 短促,便于表示 shocking 感觉,而且 cut camera 容易让人失去方向,但对于死亡场景不是问题

- only for death 短促,便于表示 shocking 感觉,而且 cut camera 容易让人失去方向,但对于死亡场景不是问题
- camera shake
- 很重要,一定要用
- systemic melee camera
三、 机制的简化:切断“戈耳狄俄斯之结”
- 舍弃防御与闪避 (14:41 - 19:32)
在开发周期仅剩 4 个月时,顽皮狗做出了一个艰难的决定:删掉格挡和闪避按键。
- 原因 1:操作复杂度。作为一款射击游戏,操作布局已经非常拥挤,增加防御键会让节奏变得迟钝。
- 原因 2:摄像机限制。为了沉浸感,镜头必须贴近肩膀。一旦允许格挡,玩家就会要求全方位视野以防御屏幕外的攻击,这破坏了游戏的基调。
- 原因 3:后果论。如果能格挡潜行者(Clicker)的攻击,就会削弱被发现后的恐惧感和紧迫感。


- 能够 evade 就会出现双方对打的好笑场景,并不利于表现 clicker 的强大


- 优雅的复杂性 (21:29 - 22:31)
为了防止系统变得单调,他们转向了情境化(Context) 设计:
- 利用环境:将砖头作为核心。它不需要新按键,却能与隐身、硬直、处决系统完美联动,形成“预判策略(Predictive Strategy)”。




四、 技术实现:脚本与内存管理
- 极致的内存控制 (01:00 - 02:01, 26:23 - 30:21)
整个近战系统(含单人模式近 1000 个动作)的内存占用从未超过 4MB。
- 模块化加载 (Modular Loading):根据关卡敌人(人类、感染者)和角色武器,仅加载必要的动画块。
- 动画流送 (Streaming):所有超过 80 帧的长动画(如潜行刺杀、双人处决)都通过流送加载,不占常驻内存。
- 分级采样 (Sample Rates):普通动作采样率为 10fps,核心连招为 15fps,流送动画可达 30fps。


-
为 camera 提供多个备选

-
多个聚光灯来保证黑暗情况下的可见性





- 同步与非同步系统 (33:14 - 35:16) sync animation -> unsync animation 提供了更多的自由度,也让不同的地形条件成为可能
他们从《神秘海域》传统的“单点同步动画对”转向了独立反应系统:
- 关节锁定技术:攻击者根据防御者的预期位置调整自己,反之亦然。这解决了地形不平整的问题。
- Flinching(硬直)应用:这让单人模式下的跑者(Runner)能像多人模式一样,在被打的同时还能做出反击。


- 文本脚本的力量 (36:12 - 38:12)
顽皮狗坚持使用基于文本的脚本语言(Proprietary Lisp),而非图形化节点(如 Kismet):
- 迭代速度:设计师可以直接修改文本,无需重新编译。
- 模板化 (Templates):通过定义“打击”、“处决”的模板,只需修改一处代码,即可为全局 1000 个动作添加摄像机震动。



- AI


- macro


- 求饶,直接瞄头

五、 结语与秘诀 (48:56 - 50:55)
- 融入整体:近战设计师不能自嗨,必须确保机制与射击、潜行、资源管理系统协调统一。
- 细节决定成败:通过脚本在敌人脖子上留下折断的弹簧刀柄,这种细节是程序员没空处理的,却能增加游戏的灵魂。
- 最终建议:如果你在做一个格斗游戏,一定要加摄像机震动 (Camera Shake)。

L-My Words
L-Zotero citation key
To be permanent notes (Complete Ideas)
P-Self Explained Sentences
P-Connection
- Parent
- Caused by::
- - Driven by::
- - Cite from::
-
- Caused by::
- Child
- Excalidraw::
- - Is source of::
- - Including::
- - Have Example::
- - Contributes to::
- - Consist of::
-
- Excalidraw::
- Friend
- Left
- Achieved with::
- - Affected by::
- - Supported by::
- - Enhanced by::
- - related::
-
- Achieved with::
- Right
- against::
- - Opposites::
-
- against::
- Left